﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using Dados.Interfaces;
using Dados.ClassesSQLServer;
using Dados.ValueObjects;

namespace Negocios
{
    [DataObject]
    public class UsuarioBOMetodos
    {
        private IUsuario iUsuarioDados;

        public UsuarioBOMetodos()
        {
            iUsuarioDados = new UsuarioSQLServer();
        }

        [DataObjectMethodAttribute(DataObjectMethodType.Insert, true)]
        public bool inserir(UsuarioBO cBO)
        {
            UsuarioVO cVO = new UsuarioVO();
            cVO.Nome = cBO.Nome;
            cVO.Login = cBO.Login;
            cVO.Senha = cBO.Senha;
            cVO.Email = cBO.Email;
            cVO.Tipo = cBO.Tipo;
            return (iUsuarioDados.Insere(cVO) == 1);

        }

        [DataObjectMethodAttribute(DataObjectMethodType.Update, true)]
        public bool Atualiza(UsuarioBO cBO)
        {
            UsuarioVO cVO = new UsuarioVO();
            cVO.Nome = cBO.Nome;
            cVO.Login = cBO.Login;
            cVO.Senha = cBO.Senha;
            cVO.Email = cBO.Email;
            cVO.Tipo = cBO.Tipo;
            return (iUsuarioDados.Atualiza(cVO) == 1);
        }

        [DataObjectMethodAttribute(DataObjectMethodType.Delete, true)]
        public bool Remove(string login)
        {
            return iUsuarioDados.Remove(login) == 1;
        }

        [DataObjectMethodAttribute(DataObjectMethodType.Select, false)]
        public UsuarioBO Consulta(string login)
        {
            UsuarioVO cVO = iUsuarioDados.Consulta(login);
            UsuarioBO cBO = new UsuarioBO();
            cBO.Nome = cVO.Nome;
            cBO.Login = cVO.Login;
            cBO.Senha = cVO.Senha;
            cBO.Email = cVO.Email;
            cBO.Tipo = cVO.Tipo;
            return cBO;
        }

        [DataObjectMethodAttribute(DataObjectMethodType.Select, true)]
        public List<UsuarioBO> ConsultaTodos()
        {
            List<UsuarioBO> lUsuarioBO = new List<UsuarioBO>();
            List<UsuarioVO> lUsuarioVO = (new UsuarioSQLServer()).ConsultaTodos();
            foreach (UsuarioVO cVO in lUsuarioVO)
            {
                UsuarioBO cBO = new UsuarioBO();
                cBO.Nome = cVO.Nome;
                cBO.Login = cVO.Login;
                cBO.Senha = cVO.Senha;
                cBO.Email = cVO.Email;
                cBO.Tipo = cVO.Tipo;
                lUsuarioBO.Add(cBO);
            }
            return lUsuarioBO;
        }

    }
}